#include <iostream>

class Test
{
public:
    Test()
    {
        count++;
    }
    ~Test()
    {
        count--;
    }
 
    // 静态成员函数 ：不属于某个特定对象，属于整个类
    // 没有this指针 不能访问普通成员变量,可以访问静态成员变量
    // static void func()
    // {
    //     // b++;   //不能访问
    //     count++;  //可以访问
    //     std::cout<<"hello"<<std::endl;
    // }

public:
    static int count; // 静态成员变量：不会属于某一个特定对象（因为它放全局区，生命周期长于对象），属于整个类(被所有的对象共享)；
    int b;
};

// 在类外初始化静态成员变量
int Test::count = 0;

int main()
{
    Test *a = new Test;
    Test *b = new Test;
    std::cout<<a->count<<std::endl;
    // printf("%p %p",a,b); // a,b的值肯定是一样的，都是指向Test

    delete a;
    // std::cout<<Test::count<<std::endl;

    // Test::func();  //只是借用命名空间（只是放在类内的全局函数）
    // Test t;
    // t.func(); //也可以用类去调用 
    return 0;
}
